由於昨天是介紹基礎型別,所以今天想要來順便介紹一下在Swift世界裡面的一個特別型別Any。
這個Any的強大之處在於昨天介紹的基礎型別裡的任何一個型別,都可以用Any作為型別。
舉凡Int、Double、String、Character、Bool都可以用Any代替,是不是很方便?
另外像是還沒有介紹到的集合型別Array、Sets、Dictionary也都可以用Any代替
是否有發現上圖的基礎型別使用Any替代後,少了哪一位? 沒錯就是Float
如同昨天有提到的,系統預設裡只要有小數點的值,在沒有型別標註的情況下,
都會自動被判定為Double,所以這邊也不例外喔,因為Float需要指定型別,
所以當Any型別設為小數點數值的時候,這個型態的精準度是參考Double的15位數。
不過不用太在意,因為大部分的開發者除了新手外,不太會特別使用型別標註,
也就是說Float是比較少被用到的,當然可能在大型開發專案裡面或許會有記憶體或者更深的考量,
不過就我們新手練習的現階段而已,只要記得這兩者的不同特性以及Any的特性即可。
最後你是否會有疑問,那幹嘛要有這麼多基礎型別,都用Any不就好了?如果這麼方便就好了(笑)
其實在使用Any這個型別的時候,最終還是要透過as或是其他的方式把參數轉為原本的型別,
所以說這只是一個暫時的型別,方便儲存一些未被定義的型別參數,這種時候Any就很方便,
但實際上,如果有另一個Int型別想要做相加的動作,雖然此時的Any型別裡面儲存的是個整數,
系統也會告知Binary operator '+' cannot be applied to operands of type 'Int' and 'Any'
也就是因為將型別Int跟Any做相加的動作,這種時候還是要透過轉換型別的部分才可以相加。
型別轉換的部分在接下來才會慢慢接觸到,現在只要先有個概念就好:)